Package org.mozilla.jss.crypto
Class KEMAlgorithm
java.lang.Object
org.mozilla.jss.crypto.Algorithm
org.mozilla.jss.crypto.KEMAlgorithm
Represents a Key Encapsulation Mechanism (KEM) algorithm.
KEM is a cryptographic primitive used to establish a shared secret between two parties,
typically for key exchange. Unlike traditional key exchange mechanisms, KEM algorithms
are designed to be secure against quantum computer attacks.
This class currently supports ML-KEM (Module-Lattice-based Key Encapsulation Mechanism)
variants, which are post-quantum cryptography algorithms standardized in FIPS 203.
ML-KEM was previously known as CRYSTALS-Kyber.
Each KEM algorithm has associated parameters including:
- Secret size - the size of the shared secret generated
- Cipher size - the size of the encapsulated ciphertext
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intstatic final KEMAlgorithmML-KEM-1024 algorithm providing security level 5 (equivalent to AES-256).static final KEMAlgorithmML-KEM-512 algorithm providing security level 1 (equivalent to AES-128).static final KEMAlgorithmML-KEM-768 algorithm providing security level 3 (equivalent to AES-192).private static final Map<OBJECT_IDENTIFIER, KEMAlgorithm> private intFields inherited from class org.mozilla.jss.crypto.Algorithm
ANSI_X9_ALGORITHM, ANSI_X962_OID, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_AES_CMAC, CKM_AES_ECB, CKM_AES_KEY_GEN, CKM_AES_KEY_WRAP, CKM_AES_KEY_WRAP_KWP, CKM_AES_KEY_WRAP_PAD, CKM_DES_CBC_PAD, CKM_DES_KEY_GEN, CKM_DES3_CBC_PAD, CKM_DES3_ECB, CKM_DES3_KEY_GEN, CKM_DSA_KEY_PAIR_GEN, CKM_EC_KEY_PAIR_GEN, CKM_GENERIC_SECRET_KEY_GEN, CKM_ML_DSA, CKM_ML_DSA_KEY_PAIR_GEN, CKM_ML_KEM, CKM_ML_KEM_KEY_PAIR_GEN, CKM_NSS_AES_KEY_WRAP, CKM_NSS_AES_KEY_WRAP_PAD, CKM_NSS_SP800_108_COUNTER_KDF_DERIVE_DATA, CKM_NSS_SP800_108_DOUBLE_PIPELINE_KDF_DERIVE_DATA, CKM_NSS_SP800_108_FEEDBACK_KDF_DERIVE_DATA, CKM_PBA_SHA1_WITH_SHA1_HMAC, CKM_RC2_CBC_PAD, CKM_RC2_KEY_GEN, CKM_RC4_KEY_GEN, CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_RSA_PKCS_OAEP, CKM_SHA_1_HMAC, CKM_SHA256_HMAC, CKM_SHA384_HMAC, CKM_SHA512_HMAC, CKM_SP800_108_COUNTER_KDF, CKM_SP800_108_DOUBLE_PIPELINE_KDF, CKM_SP800_108_FEEDBACK_KDF, name, oid, oidIndex, SEC_OID_AES_128_CBC, SEC_OID_AES_128_ECB, SEC_OID_AES_128_KEY_WRAP_KWP, SEC_OID_AES_192_CBC, SEC_OID_AES_192_ECB, SEC_OID_AES_192_KEY_WRAP_KWP, SEC_OID_AES_256_CBC, SEC_OID_AES_256_ECB, SEC_OID_AES_256_KEY_WRAP_KWP, SEC_OID_ANSIX9_DSA_SIGNATURE, SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST, SEC_OID_ANSIX962_EC_PUBLIC_KEY, SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE, SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE, SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE, SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE, SEC_OID_ANSIX962_ECDSA_SIGNATURE_SPECIFIED_DIGEST, SEC_OID_DES_CBC, SEC_OID_DES_ECB, SEC_OID_DES_EDE3_CBC, SEC_OID_HMAC_SHA1, SEC_OID_HMAC_SHA256, SEC_OID_HMAC_SHA384, SEC_OID_HMAC_SHA512, SEC_OID_MD2, SEC_OID_MD5, SEC_OID_ML_DSA_SIGNATURE, SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION, SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION, SEC_OID_PKCS1_RSA_ENCRYPTION, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION, SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION, SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION, SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION, SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_128_BIT_RC2_CBC, SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_128_BIT_RC4, SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_3KEY_TRIPLE_DES_CBC, SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_40_BIT_RC2_CBC, SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_40_BIT_RC4, SEC_OID_PKCS5_PBE_WITH_MD2_AND_DES_CBC, SEC_OID_PKCS5_PBE_WITH_MD5_AND_DES_CBC, SEC_OID_PKCS5_PBE_WITH_SHA1_AND_DES_CBC, SEC_OID_PKCS5_PBES2, SEC_OID_PKCS5_PBKDF2, SEC_OID_PKCS5_PBMAC1, SEC_OID_RC2_CBC, SEC_OID_RC4, SEC_OID_SHA1, SEC_OID_SHA256, SEC_OID_SHA384, SEC_OID_SHA512 -
Constructor Summary
ConstructorsConstructorDescriptionKEMAlgorithm(int oidIndex, String name, OBJECT_IDENTIFIER oid, int secretSize, int cipherSize) -
Method Summary
Methods inherited from class org.mozilla.jss.crypto.Algorithm
getEnum, getParameterClass, getParameterClasses, isValidParameterObject, toOID, toString
-
Field Details
-
oidMap
-
secretSize
private int secretSize -
cipherSize
private int cipherSize -
MLKEM512
ML-KEM-512 algorithm providing security level 1 (equivalent to AES-128).- OID: 2.16.840.1.101.3.4.4.1
- Secret size: 32 bytes
- Ciphertext size: 768 bytes
-
MLKEM768
ML-KEM-768 algorithm providing security level 3 (equivalent to AES-192).- OID: 2.16.840.1.101.3.4.4.2
- Secret size: 32 bytes
- Ciphertext size: 1088 bytes
-
MLKEM1024
ML-KEM-1024 algorithm providing security level 5 (equivalent to AES-256).- OID: 2.16.840.1.101.3.4.4.3
- Secret size: 32 bytes
- Ciphertext size: 1568 bytes
-
-
Constructor Details
-
KEMAlgorithm
public KEMAlgorithm(int oidIndex, String name, OBJECT_IDENTIFIER oid, int secretSize, int cipherSize)
-
-
Method Details
-
getSecretSize
public int getSecretSize() -
getCipherSize
public int getCipherSize() -
fromOID
- Throws:
NoSuchAlgorithmException
-